package com.lipaluma.parser.builder;

import java.util.List;

import com.lipaluma.field.mapper.FieldMapper;
import com.lipaluma.parser.AbstractDataParser;
import com.lipaluma.parser.DataParser;

public interface FromParserAddNewFieldMapperBuilder<BUILDER extends AbstractDataParser.Builder<? extends DataParser<TARGET>, TARGET>, TARGET> {
	FromParserAddNewFieldMapperBuilder<BUILDER, TARGET> mapNextFieldInOneToMany();
	FromParserFieldMapperAfterRegisterBuilder<BUILDER, TARGET> addFieldMapper(String fieldName, FieldMapper mapper);
	FromParserNeedMappingBuilder<BUILDER, TARGET> mapFieldAutomatically(String fieldName);
	FromParserNeedMappingBuilder<BUILDER, TARGET> mapMultipleFieldAutomatically(String fieldName);
	FromParserAddNewFieldMapperBuilder<BUILDER, TARGET> mapObject(String fieldName, Class<?> targetClass);
	FromParserObjectFieldMapperAfterRegisterBuilder<BUILDER, TARGET> mapObject(String fieldName, List<FieldMapper> fieldMappers);

	FromParserObjectFieldMapperAfterRegisterBuilder<BUILDER, TARGET> endMappingObject();
}
